bitkeeper revision 1.1108.12.1 (4100e788EN1VntqfvMe4jTLeq56uIQ)
authorxenbk@gandalf.hpl.hp.com <xenbk@gandalf.hpl.hp.com>
Fri, 23 Jul 2004 10:25:12 +0000 (10:25 +0000)
committerxenbk@gandalf.hpl.hp.com <xenbk@gandalf.hpl.hp.com>
Fri, 23 Jul 2004 10:25:12 +0000 (10:25 +0000)
Merge

1  2 
.rootkeys
tools/python/setup.py
tools/python/xen/xend/XendClient.py

diff --cc .rootkeys
Simple merge
Simple merge
index b5ebf557f16fbedd9caeb438a9677b17738b4d04,2d08f36056808075aa7a4f15060dd7e42f639728..52b8702b280133862221bba3b9e789ad9cc59ef6
@@@ -255,48 -255,48 +255,88 @@@ class AsynchXendClientProtocol(XendClie
  
      Uses AsynchXendClient to manage the connection.
      """
 -
+     def __init__(self):
+         self.err = None
+     def xendRequest(self, url, method, args=None):
+         """Make a request to xend. The returned deferred is called when
+         the result is available.
+         @param url:    xend request url
+         @param method: http method: POST or GET
+         @param args:   request arguments (dict)
+         @return: deferred
+         """
+         request = XendRequest(url, method, args)
+         self.deferred = Deferred()
+         clientCreator = ClientCreator(reactor, AsynchXendClient, self, request)
+         clientCreator.connectTCP(url.host, url.port)
+         return self.deferred
+     def callErrback(self, err):
+         if not self.deferred.called:
+             self.err = err
+             self.deferred.errback(err)
+         return err
+     def callCallback(self, val):
+         if not self.deferred.called:
+             self.deferred.callback(val)
+         return val
+     def handleException(self, err):
+         return self.callErrback(err)
+     def handleResponse(self, data):
+         if self.err: return self.err
+         val = XendClientProtocol.handleResponse(self, data)
+         if isinstance(val, Exception):
+             self.callErrback(val)
+         else:
+             self.callCallback(val)
+         return val
  
 +    def __init__(self):
 +        self.err = None
 +
 +    def xendRequest(self, url, method, args=None):
 +        """Make a request to xend. The returned deferred is called when
 +        the result is available.
 +        
 +        @param url:    xend request url
 +        @param method: http method: POST or GET
 +        @param args:   request arguments (dict)
 +        @return: deferred
 +        """
 +        request = XendRequest(url, method, args)
 +        self.deferred = Deferred()
 +        clientCreator = ClientCreator(reactor, AsynchXendClient, self, request)
 +        clientCreator.connectTCP(url.host, url.port)
 +        return self.deferred
 +
 +    def callErrback(self, err):
 +        if not self.deferred.called:
 +            self.err = err
 +            self.deferred.errback(err)
 +        return err
 +
 +    def callCallback(self, val):
 +        if not self.deferred.called:
 +            self.deferred.callback(val)
 +        return val
 +
 +    def handleException(self, err):
 +        return self.callErrback(err)
 +
 +    def handleResponse(self, data):
 +        if self.err: return self.err
 +        val = XendClientProtocol.handleResponse(self, data)
 +        if isinstance(val, Exception):
 +            self.callErrback(val)
 +        else:
 +            self.callCallback(val)
 +        return val
 +        
  class Xend:
      """Client interface to Xend.
      """
                                'warp'    : warp,
                                'warpl'   : warpl,
                                'warpu'   : warpu })
-     
  
 -
      def xend_domain_cpu_atropos_set(self, id, period, slice, latency, xtratime):
          return self.xendPost(self.domainurl(id),
                               {'op'      : 'cpu_atropos_set',
  
      def xend_dmesg(self):
          return self.xendGet(self.dmesgurl())
-     
  
 -
  def xendmain(srv, asynch, fn, args):
      if asynch:
          client = AsynchXendClientProtocol()